﻿<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="UTF-8" />
    <title></title>
    <link href="../../Scripts/bootstrap/css/bootstrap.css" rel="stylesheet" />
    <script type="text/javascript" src="../../Scripts/bootstrap/js/jquery.min.js"></script>
    <script src="../../Scripts/QueryString.js" type="text/javascript"></script>
    <link href="../../../DataUser/Style/ccbpm.css" rel="stylesheet" type="text/css" />
    <!-- 引用通用的js文件. -->
    <script type="text/javascript" src="../../Scripts/config.js"></script>
    <script type="text/javascript" src="../../Comm/Gener.js"></script>
    <style type="text/css">
        caption {
            text-align: left;
            font-family: 'Microsoft YaHei';
            font-weight: bolder;
            border-bottom: none;
            margin-bottom: 10px;
        }
    </style>
    <script type="text/javascript" language="javascript">
        //页面启动函数.
        $(function () {

            $("#Msg").html("正在加载,请稍后......");

            //绑定数据源.
            GenerBindEntities("DDL_DBSrc", "BP.Sys.SFDBSrcs", "local");

            //初始化groupID.
            var fk_flow = GetQueryString("FK_Flow");

            var handler = new HttpHandler("BP.WF.HttpHandler.WF_Admin_AttrFlow");
            handler.AddPara("FK_Flow", fk_flow);
            var data = handler.DoMethodReturnString("DTSBTable_Init");

            if (data.indexOf('err@') == 0) {
                alert(data);
                return;
            }

            data = JSON.parse(data);

            //获取三个对象.
            var flow = data["Flow"][0];
            var nodes = data["Nodes"];
            var tables = data["Tables"];

            //赋值.
            $("#P1").val(flow.PTable);
            $("#P2").val(flow.PTable);
            $("#P3").val(flow.PTable);

            $("#RB_DTSWay_" + flow.DTSWay).attr("Checked", true);
            $("#RB_DTSField" + flow.DTSField).attr("Checked", true);

            //绑定表.
            GenerBindDDL("DDL_Table", tables, "No", "Name", flow.DTSBTable);


            $("#Msg").html("");
        });

        function Save() {

            $("#Msg").html("正在保存,请稍后......");

            var fk_flow = GetQueryString("FK_Flow");

            //            var dtsWay = GetRadioValue("RB_DTSWay");
            //            var dbsrc = $("DDL_DBSrc").val();
            //            var table = $("DDL_Table").val();
            //            var table = $("DDL_Table").val();

            var checkBoxIDs = GenerCheckIDs(); //获得所有的 checkBox ID传入到后台去,用于解决checkbox控件，在没有被选择的时候，没有值的问题。

            var handler = new HttpHandler("BP.WF.HttpHandler.WF_Admin_AttrFlow");
            handler.AddUrlData();
            handler.AddFormData();
            handler.AddPara("CheckBoxIDs", checkBoxIDs);

            var data = handler.DoMethodReturnString("DTSBTable_Save");
            if (data.indexOf('err@') >= 0) {
                $("#Msg").html("<font color=red>" + data + "</font>");
                return;
            }
            alert("保存成功")
            window.location.href = window.location.href;
            //$("#Msg").html("<font color=green>" + data + "</font>");
            return;
        }
    </script>
</head>
<body>
    <form id="cc">
    <table class='table table-bordered table-condensed'>
        <caption>
            与业务表数据同步</caption>
        <tr>
            <td valign="top" style="width: 20%; color: Gray">
                <fieldset>
                    <legend>应用场景</legend>
                    <ol>
                        <li>在稍大的应用中，流程系统与业务系统的数据库是分开的。比如：业务流程系统、固定资产系统、客户关系管理系统、财务系统。</li>
                        <li>在固定资产管理系统中，流程审批数据库与固定资产数据库是分开的，一个固定资产的采购申请走完后，需要把该固定资产采购的信息同步到固定资产系统中去，或者一个固定资产的报废需要把该审批结果需要更新固定资产状态。</li>
                        <li>流程走完一个订单审批后，需要把订单的信息同步到仓库管理系统中去。</li>
                    </ol>
                </fieldset>
                <fieldset>
                    <legend>帮助</legend>
                    <ol>
                        <li>ccbpm在运转的过程中会把节点表单的数据存储到ccbpm数据库的数据表 <span style="color: Blue;">[<%=fl.PTable%>]
                        </span>里，这个表的名称可以在流程属性里定义。 </li>
                        <li>流程数据存储表可以自定义，定义路径：流程属性=》 基本属性=》流程数据表。</li>
                        <li>有的应用场景下，会把该表的业务数据同步到其他系统中去，ccbpm提供了事件可以使用编程的方式实现这样的需求。</li>
                        <li>为了更好的适应开发者的需求，我们提供了界面化的定义工具。 </li>
                        <li>该功能可以把流程数据转出到指定的数据库上，指定的数据表里。</li>
                    </ol>
                </fieldset>
            </td>
            <td valign="top" style="text-align: left;">
                <fieldset>
                    <legend>
                        <input type="radio" value="0" id="RB_DTSWay_0" name="RB_DTSWay" checked="checked" />
                        <label for="RB_DTSWay_0">
                            不执行同步
                        </label>
                    </legend>
                    <ul style="color: Gray">
                        <li>流程运行的数据存储到,不与其他系统交换数据。</li>
                        <li>其他系统可以读写这个表的数据，完成相关的业务操作。</li>
                        <li>该表名是可以在流程属性配置。</li>
                    </ul>
                </fieldset>
                <fieldset>
                    <legend>
                        <input type="radio" value="1" id="RB_DTSWay_1" name="RB_DTSWay" />
                        <label for="RB_DTSWay_1">
                            执行同步
                        </label>
                    </legend>
                    <table class="table table-hover tab-content table-bordered" style="text-align: center;">
                        <tr>
                            <td>
                                请选择要导出的数据源
                            </td>
                            <td>
                                <select id="DDL_DBSrc" name="DDL_DBSrc">
                                </select>
                            </td>
                        </tr>
                        <tr>
                            <td>
                                指定的表
                            </td>
                            <td>
                                <select id="DDL_Table" name="DDL_Table">
                                </select>
                                &nbsp; 要把数据同步到那个数据表里去？
                            </td>
                        </tr>
                        <tr>
                            <td>
                                同步的计算方式
                            </td>
                            <td>
                                <input type="radio" value="0" id="RB_DTSField0" name="DTSField" />
                                <span for="RB_DTSField0">
                                    字段名相同
                                </span>
                                <input type="radio" value="1" id="RB_DTSField1" name="DTSField" />
                                <span for="RB_DTSField1">
                                    按设置字段
                                </span>
                                &nbsp; <a class="btn btn-default btn-sm" href="javascript:OpenFields()">设置字段匹配</a>
                            </td>
                        </tr>
                        <script type="text/javascript">

                            //设置字段匹配
                            function OpenFields() {

                                var dllSrc = document.getElementById("DDL_DBSrc").value;
                                var src = dllSrc.options[dllSrc.selectedIndex].value;

                                var dllTable = document.getElementById("DDL_Table").value;

                                var tableName = dllTable.options[dllTable.selectedIndex].value;
                                var fk_flow = GetQueryString("FK_Flow");
                                var url = '../../Admin/AttrFlow/DTSBTableExt.htm?FK_Flow=' + fk_flow + '&FK_DBSrc=' + src + '&TableName=' + tableName + '&';
                                if (window.parent && window.parent.addTab) {
                                    window.parent.addTab('dtsbTable', '设置字段匹配', url, '');
                                } else {
                                    window.open(url, '_blank');
                                }
                            }
                            function OpenDTSNodes() {
                                var toggleStyle = document.getElementById("dis").style.display;
                                if (toggleStyle == "none") {
                                    document.getElementById("dis").style.display = "block";
                                } else {
                                    document.getElementById("dis").style.display = "none";
                                }
                            }
                            function WinOpen(url, winName) {
                                var newWindow = window.open(url, winName, 'width=700,height=400,top=100,left=300,scrollbars=yes,resizable=yes,toolbar=false,location=false,center=yes,center: yes;');
                                newWindow.focus();
                                return;
                            }
                            //必须初始化
                            window.onload = function () {
                                checkNodes();
                            };

                            function checkNodes() {
                                var input = document.getElementsByTagName("input");
                                var value = '';
                                for (var i = 0; i < input.length; i++) {
                                    if (input[i].type == "checkbox") {
                                        if (input[i].checked) {
                                            value += input[i].id + ",";
                                        }
                                    }
                                }

                                // document.all.<%= HiddenField.ClientID %>.value=value;
                            }
                        </script>
                        <tr>
                            <td style="border-bottom: none;">
                                同步的时间
                            </td>
                            <td style="border-bottom: none;">
                                <!--    <asp:RadioButton ID="RB_DTSTime0" Text="所有的节点发送后" GroupName="xx" runat="server" />
                                <br />
                                <asp:RadioButton ID="RB_DTSTime2" Text="流程结束时" GroupName="xx" runat="server" />
                                <br />
                                <asp:RadioButton ID="RB_DTSTime1" Text="指定的节点发送后" GroupName="xx" runat="server" />
                                [<a href="javascript:OpenDTSNodes()">设置同步的节点</a>]
                                <div id="dis" style="display: none;">
                                    <fieldset>
                                        <legend>选择节点</legend>
                                      
                                            BP.WF.Nodes nds = fl.HisNodes;
                                            string html = "<table><tr>";
                                            int count = 1;

                                            string[] checkNodes = fl.DTSSpecNodes.Split(',');
                                            foreach (BP.WF.Node nd in nds)
                                            {
                                                bool isChecked = false;
                                                foreach (string cn in checkNodes)
                                                {
                                                    if (cn == nd.NodeID.ToString())
                                                    {
                                                        isChecked = true;
                                                    }
                                                }
                                                if (count == 2)//一行两列
                                                {
                                                    if (isChecked)
                                                        html += "<td ><input onclick=\"checkNodes();\"  class=\"checkNode\"   checked=\"checked\" id=\"" + nd.NodeID + "\" type=\"checkbox\" />[" + nd.NodeID + "]" + nd.Name + "</td></tr>";
                                                    else
                                                        html += "<td><input onclick=\"checkNodes();\"  class=\"checkNode\" id=\"" + nd.NodeID + "\" type=\"checkbox\" />[" + nd.NodeID + "]" + nd.Name + "</td></tr>";

                                                    count = 0;
                                                }
                                                else
                                                {
                                                    if (isChecked)
                                                        html += "<td><input onclick=\"checkNodes();\"  class=\"checkNode\"  checked=\"checked\"  id=\"" + nd.NodeID + "\" type=\"checkbox\" />[" + nd.NodeID + "]" + nd.Name + "</td>";
                                                    else
                                                        html += "<td><input onclick=\"checkNodes();\"  class=\"checkNode\"  id=\"" + nd.NodeID + "\" type=\"checkbox\" />[" + nd.NodeID + "]" + nd.Name + "</td>";
                                                }
                                                count += 1;
                                            }
                                            html += "</table>";
                                        %>
                                        <asp:HiddenField ID="HiddenField" runat="server" />
                                    </fieldset>
                                </div>
                                <br />-->
                            </td>
                            <td style="border-bottom: none;">
                            </td>
                        </tr>
                    </table>
                </fieldset>
                <input type="button" value="保存" onclick="Save();" />
                <!--  <asp:Button ID="BtnSave" runat="server" OnClick="BtnSave_Click" Text=" 保 存 " />-->
            </td>
        </tr>
    </table>
    </form>
</body>
</html>
